#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
#define m(a) memset(a,0,sizeof(a))
const int N=1005;
int e[N][N];
int g[N],used[N];
int k,m,n;
bool dfs(int x){
    for(int i=1;i<=n;i++){
        if(e[x][i]&&!used[i]){
            used[i]=1;
            if(g[i]==0||dfs(g[i])){
                g[i]=x;
                return 1;
            }
        }
    }
    return 0;
}
int main(){
    while(cin>>k&&k!=0){
        cin>>m>>n;
        int x,y;
        m(g);
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                e[i][j]=0;
            }
        }
        for(int i=1;i<=k;i++){
            cin>>x>>y;
            e[x][y]=1;
        }
        int sum=0;
        for(int i=1;i<=m;i++){
            m(used);
            if(dfs(i)==1)sum++;
        }
        cout<<sum<<endl;
    }
    return 0;
}
